// ProjectName: go-learn-demo
// PackageName: channelybxb
// Description: 使用WaitGroup的方式实现
// Author: hy.bai
// Date: 2025-07-30 21:33

package main

import (
	"fmt"
	"sync"
)

// 定义一个全局变量，用来指定channel的长度。
var length = 10

// 定义一个全局的计数器
var wg sync.WaitGroup

var intData chan int = make(chan int, length)

// 写数据的协程
func writeData() {
	var k int = 1
	for i := 0; i < length; i++ {
		val := (i + 1) * 10
		intData <- val
		fmt.Printf("第%d次写入数据:%v\n", k, val)
		k++
	}
	close(intData)
	wg.Done()
}

// 读数据的协程
func readData() {
	var k int = 1
	for value := range intData {
		fmt.Printf("第%d次读取数据:%v\n", k, value)
		k++
	}
	wg.Done()
}

func main() {
	wg.Add(2)
	// 开启两个协程
	go writeData()
	go readData()

	wg.Wait()

	fmt.Println("main函数结束")
}
